package com.ruoyi.system.mapper;

import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.system.domain.xcx.AppUser;
import com.ruoyi.system.domain.xcx.Goods;
import io.lettuce.core.dynamic.annotation.Param;

import java.util.List;

/**
 * 商品管理Mapper接口
 *
 * @author ruoyi
 * @date 2023-09-30
 */
public interface GoodsMapper
{
    /**
     * 查询商品管理
     *
     * @param goodId 商品管理主键
     * @return 商品管理
     */
    @DataSource(DataSourceType.SLAVE)
    public Goods selectGoodsByGoodId(String goodId);

    /**
     * 通过标题选择商品
     * @param goodTitle
     * @return
     */
    public Goods selectGoodsByTitle(String goodTitle);

    /**
     * 通过标题选择商品
     * @param goodTitle
     * @return
     */
    public Goods selectGoodsByTitleAndMerchantId(@Param("goodTitle") String goodTitle, @Param("merchantId") String merchantId);

    /**
     * 查询商户的最新一个商品
     * @param merchantId
     * @return
     */
    public Goods selectOneGood(String merchantId);

    /**
     * 查询商品管理列表
     *
     * @param goods 商品管理
     * @return 商品管理集合
     */
    public List<Goods> selectGoodsList(Goods goods);

    /**
     * 新增商品管理
     *
     * @param goods 商品管理
     * @return 结果
     */
    public int insertGoods(Goods goods);

    /**
     * 修改商品管理
     *
     * @param goods 商品管理
     * @return 结果
     */
    public int updateGoods(Goods goods);

    /**
     * 删除商品管理
     *
     * @param goodId 商品管理主键
     * @return 结果
     */
    public int deleteGoodsByGoodId(String goodId);

    /**
     * 批量删除商品管理
     *
     * @param goodIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteGoodsByGoodIds(String[] goodIds);

    /**
     * 根据goodIds集合，查询对应商品管理list集合，用于代理平台删除时，是否有权限删除
     *
     * @param goodIds 需要删除的商品管理主键集合
     * @return List<Goods>
     */
    public List<Goods> selectGoodsByGoodIds(String[] goodIds);


    /**
     * 清理数据
     * @param merchanId
     * @return
     */
    public int clearDataByMerchanId(String merchanId);


    /**
     * 清理数据
     * @param merchanId
     * @return
     */
    public int clearDataByMerchanIdAnddataType(String merchanId);


    /**
     * 查询商品管理-仅仅查询goodId,以及商品编号以及三次暂停百分比次数
     *
     * @param goodId 商品管理主键
     * @return 商品管理
     */
    public Goods selectByGoodId(String goodId);

    public Goods selectGoodsByOrderNumber(Goods goods);

    @DataSource(DataSourceType.SLAVE)
    public List<Goods> selectGoodsListByUser(Goods good);

    @DataSource(DataSourceType.SLAVE)
    public Goods selectGoodsInfo(Goods good);
}
